﻿using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TeamArchitect.PowerTools.Ultimate.Features;

namespace YasharEl.Infrastructure.ArchitectureTools.AppModeler
{
	public partial class Feature
	{
		private CommandBinding[] commands;

		public override IEnumerable<CommandBinding> Commands
		{ 
			get
			{
				if (this.commands == null)
				{
					this.commands = new CommandBinding[]
					{
						new CommandBinding(
							this.FeatureComposition, 
							"RangersArchitectureGuidanceLib.Commands.ExecuteCommand",
							new FixedValuePropertyBinding("CommandName", "View.GuidanceWorkflowExplorer"))
						{
							Name = "GuidanceWorkflowExplorer"
						},
						new CommandBinding(this.FeatureComposition, "Microsoft.VisualStudio.TeamArchitect.PowerTools.Ultimate.Features.Library.Commands.ShowMessage")
						{
							Name = "LaunchAppModelerGuidanceCommandBinding"
						},
						new CommandBinding(this.FeatureComposition, "Microsoft.VisualStudio.TeamArchitect.PowerTools.Ultimate.Features.Library.Commands.ShowMessage")
						{
							Name = "AddEntityExceptionsCommandBinding"
						},
						new CommandBinding(this.FeatureComposition, "YasharEl.Infrastructure.ArchitectureTools.AppModelerLib.Commands.CreateAllSolutionFoldersCommand")
						{
							Name = "CreateAllSolutionFoldersCommandBinding"
						},
						new CommandBinding(
							this.FeatureComposition, 
							"YasharEl.Infrastructure.ArchitectureTools.AppModelerLib.Commands.CreateSolutionFolderCommand",
							new ValueProviderPropertyBinding("SolutionFolderName", new Binding<IValueProvider>(this.FeatureComposition, "Microsoft.VisualStudio.TeamArchitect.PowerTools.Ultimate.Features.Library.ValueProviders.FirstSolutionElementMatch")))
						{
							Name = "CreateSolutionFolderCommandBinding"
						},
					};
				}

				return this.commands;
			}
		}
	}
}
